#include <iostream>
#include <vector>
#include <sw/redis++/redis++.h>
#include <string>
#include "util.hpp"

using std::cout;
using std::endl;
using std::vector;
using std::string;

void test1(sw::redis::Redis& redis)
{
    cout << "set和get的使用" <<endl;
    
    //清空数据库
    redis.flushall();

    redis.set("key1","111");
    redis.set("key2","222");
    redis.set("key3","333");

    auto value1 = redis.get("key1");
    if(value1)
        std::cout << "value1=" << value1.value() << std::endl;

    auto value2 = redis.get("key2");
    if(value2)
        std::cout << "value3=" << value2.value() << std::endl;

    auto value3 = redis.get("key3");
    if(value3)
        std::cout << "value3=" << value3.value() << std::endl;

    auto value4 = redis.get("key4");
    if(value4)
        std::cout << "value4=" << value4.value() << std::endl;
}

void test2(sw::redis::Redis& redis)
{
    cout << "exists" << endl;
    redis.flushall();
    redis.set("key","111");
    auto ret = redis.exists("key");
    cout << ret << endl;
    ret = redis.exists("key1");
    cout << ret <<endl;

    ret = redis.exists({"key","key2","key3"});
    cout << ret << endl;
}

void test3(sw::redis::Redis& redis)
{
    cout << "keys" << endl;
    redis.flushall();
    redis.set("key","111");
    redis.set("key2","222");
    redis.set("key3","333");
    redis.set("key4","444");
    redis.set("key5","555");
    redis.set("key6","666"); 
    //keys的第二个参数，是一个"插入型迭代器",
    //接下来再创建一个插入迭代器指向容器的位置，就可以把keys获取到的结果依次通过刚才的插入迭代器插入到容器的指定位置
    vector<string>result;
    auto it = std::back_inserter(result);
    redis.keys("*",it);
    printContainer(result);

}
int main()
{
    //创建Redis对象的时候，需要在构造函数中，指定redis服务器的地址和端口
    sw::redis::Redis redis("tcp://127.0.0.1:6379");
    // test1(redis);
    // test2(redis);
    test3(redis);
    return 0;
}